package pkg16b_eca.SQL.Tables;

import java.util.logging.Level;
import java.util.logging.Logger;
import pkg16b_eca.SQL.Query;
import pkg16b_eca.data.validate.Text;
import se.oru.informatik.InformatikException;

public class SQLSkadespelare_Har_Formaga extends Query {
    
    public SQLSkadespelare_Har_Formaga() throws InformatikException {}
    
    //Insert a förmåga to skådespelare.
    public void insertFormagaToSkadespelare(final int SID, final int FID) {
        //Check so that the förmåga and skadespelare exists before adding them.
        if (skadespelareExists(SID) && formagaExists(FID)) {
            //Insert and execute.
            String query = "insert into skadespelare_har_formaga (FID, SID) values (" + FID + ", " + SID + ")";
            SQLInsert(query);
        }
    }
    
    //Insert a förmåga to skådespelare.
    public void insertFormagaToSkadespelare(final String SID, final String FID) {
        if (Text.parseNumber(SID + FID) > -1) {
            insertFormagaToSkadespelare(Text.parseNumber(FID), Text.parseNumber(SID));
        }
    }
    
    //Remove a förmåga from skadespelare
    public void deleteFormagaFromSkadespelare(final int SID, final int FID) {
        //Insert and execute.
        String query = "delete from skadespelare_har_formaga where FID=" + FID + " and SID=" + SID;
        SQLDelete(query);
    }
    
    /**
     * Checks if a förmåga exists in the database.
     */
    private boolean formagaExists(int FID) {
        String query = SQLSelect("select FID from formaga where FID = '" + FID + "'");
        return !query.isEmpty();
    }
    
    /**
     * Checks if a skådespelare exists in the database.
     */
    public boolean skadespelareExists(final int SID) {
        String query = SQLSelect("select SID from skadespelare where SID = '" + SID + "'");
        return !query.isEmpty();
    }
    
    //return true if the combination of the SID and FID exists in the database skadespelare_har_formagor.
    public boolean exists(final int SID, final int FID) {
        return !SQLSelect("select SID from skadespelare_har_formaga where SID=" + SID + " and FID=" + FID).isEmpty();
    }
    
    //return true if the combination of the SID and FID exists in the database skadespelare_har_formagor.
    public boolean exists(final String SID, final String FID) {
        if (Text.parseNumber(SID) >= 0 && Text.parseNumber(FID) >= 0) {
            return exists(SID, FID);
        }
        return false;
    }
}
